package aplicacion.modelo;

import java.awt.Color;
import java.awt.Polygon;
import java.util.ArrayList;

/** Clase Modelo Polígono.
 * Guarda La información de un polígono, además de los métodos de interfaz para
 * la manipulación de los polígonos.
 *
 * @author Ileana Natalia Díaz Palacios
 * Programación III
 * Universidad Nacional
 * 
 */
public class Poligono extends Polygon {
    // se hace herencia para EXTENDER la funcionalidad del Polygon
    //<editor-fold defaultstate="collapsed" desc="Variables">
    //Datos del Poligono

    private String nombre;
    private Integer tipoRelleno;
    private Color color;
    private String relleno;
    //Vector de Puntos
    private ArrayList<Punto> vertices;
    //</editor-fold>

    //<editor-fold defaultstate="collapsed" desc="Construtores">
    public Poligono(String nombre, Integer tipoRelleno, Integer[] colores, String relleno, ArrayList<Punto> vertices) {
        super();
        this.nombre = nombre;
        this.tipoRelleno = tipoRelleno;
        this.color = new Color(colores[0], colores[1], colores[2]);
        this.relleno = relleno;
        this.vertices = vertices;
        for (Punto p : vertices) { //agrego los puntos que se van a agregar !!!
            addPoint(p.getPuntoX(), p.getPuntoY());
        }
    }

    public Poligono() {
        this.nombre = "";
        this.tipoRelleno = 0;
        this.color = Color.BLACK;
        this.relleno = "";
        this.vertices = new ArrayList<Punto>();
    }
    //</editor-fold>

    //<editor-fold defaultstate="collapsed" desc="Getters y Setters">
    public String getNombre() {
        return nombre;
    }

    public void setNombre(String Nombre) {
        this.nombre = Nombre;
    }

    public Color getColor() {
        return color;
    }

    public void setColor(Integer[] colores) {
        this.color = new Color(colores[0], colores[1], colores[2]);
    }

    public String getRelleno() {
        return relleno;
    }

    public void setRelleno(String relleno) {
        this.relleno = relleno;
    }

    public Integer getTipoRelleno() {
        return tipoRelleno;
    }

    public void setTipoRelleno(Integer tipoRelleno) {
        this.tipoRelleno = tipoRelleno;
    }

    public ArrayList<Punto> getVertices() {
        return vertices;
    }

    public void setVertices(ArrayList<Punto> vertices) {
        this.vertices = vertices;
        for (Punto p : vertices) { //agrego los puntos que se van a agregar !!!
            addPoint(p.getPuntoX(), p.getPuntoY());
        }
    }
    //</editor-fold>

    //<editor-fold defaultstate="collapsed" desc="Manejo de Poligonos">
    private void escalar(Integer escala) {
    }

    private void rellenar(Integer rojo, Integer verde, Integer azul) {
    }

    private void rellenar(String imagen) {
    }

    private void rellenar(Poligono relleno) {
    }

    private void mover(Integer moverX, Integer moverY) {
        super.reset();
        for (Punto p : vertices) {
            int x = p.getPuntoX();
            int y = p.getPuntoY();
            p.setPuntoX(x + moverX);
            p.setPuntoY(y + moverY);
            addPoint(p.getPuntoX(), p.getPuntoY());
        }
    }

    private void estirar(Integer estirarX, Integer estirarY) {
    }

    private void Girar(Integer giro) {
    }
    //</editor-fold>
}
